{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "6MNHvkiBl55x"
   },
   "source": [
    "# Tutorial Part 10: Creating a High Fidelity Dataset from Experimental Data\n",
    "\n",
    "In this tutorial, we will look at what is involved in creating a new Dataset from experimental data.  As we will see, the mechanics of creating the Dataset object is only a small part of the process.  Most real datasets need significant cleanup and QA before they are suitable for training models.\n",
    "\n",
    "## Colab\n",
    "\n",
    "This tutorial and the rest in this sequence are designed to be done in Google colab. If you'd like to open this notebook in colab, you can use the following link.\n",
    "\n",
    "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/deepchem/deepchem/blob/master/examples/tutorials/10_Creating_a_high_fidelity_model_from_experimental_data.ipynb)\n",
    "\n",
    "## Setup\n",
    "\n",
    "To run DeepChem within Colab, you'll need to run the following installation commands. This will take about 5 minutes to run to completion and install your environment. You can of course run this tutorial locally if you prefer. In that case, don't run these cells since they will download and install Anaconda on your local machine."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 323
    },
    "colab_type": "code",
    "id": "tbLbuh6wl8tX",
    "outputId": "5ddc020c-80ff-42fe-fe5b-85dd0b25446f"
   },
   "outputs": [],
   "source": [
    "!curl -Lo conda_installer.py https://raw.githubusercontent.com/deepchem/deepchem/master/scripts/colab_install.py\n",
    "import conda_installer\n",
    "conda_installer.install()\n",
    "!/root/miniconda/bin/conda info -e"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 361
    },
    "colab_type": "code",
    "id": "iR6NiQ6rLqbK",
    "outputId": "5c2fb16e-80c3-40c7-9a05-2e9e3c397a99"
   },
   "outputs": [],
   "source": [
    "!pip install --pre deepchem\n",
    "import deepchem\n",
    "deepchem.__version__"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "xpVK4q5Ol558"
   },
   "source": [
    "## Working With Data Files\n",
    "\n",
    "Suppose you were given data collected by an experimental collaborator.  You would like to use this data to construct a machine learning model. \n",
    "\n",
    "*How do you transform this data into a dataset capable of creating a useful model?*\n",
    "\n",
    "Building models from novel data can present several challenges.  Perhaps the data was not recorded in a convenient manner.  Additionally, perhaps the data contains noise.  This is a common occurrence with, for example, biological assays due to the large number of external variables and the difficulty and cost associated with collecting multiple samples.  This is a problem because you do not want your model to fit to this noise.\n",
    "\n",
    "Hence, there are two primary challenges:\n",
    "* Parsing data\n",
    "* De-noising data\n",
    "\n",
    "In this tutorial, we will walk through an example of curating a dataset from an excel spreadsheet of experimental drug  measurements. Before we dive into this example though, let's do a brief review of DeepChem's input file handling and featurization capabilities.\n",
    "\n",
    "### Input Formats\n",
    "DeepChem supports a whole range of input files. For example, accepted input formats include .csv, .sdf, .fasta, .png, .tif and other file formats. The loading for a particular file format is governed by the `Loader` class associated with that format. For example, to load a .csv file we use the `CSVLoader` class. Here's an example of a .csv file that fits the requirements of `CSVLoader`.\n",
    "\n",
    "1. A column containing SMILES strings.\n",
    "2. A column containing an experimental measurement.\n",
    "3. (Optional) A column containing a unique compound identifier.\n",
    "\n",
    "Here's an example of a potential input file.\n",
    "\n",
    "|Compound ID    | measured log solubility in mols per litre | smiles         |\n",
    "|---------------|-------------------------------------------|----------------|\n",
    "| benzothiazole | -1.5                                      | c2ccc1scnc1c2  |\n",
    "\n",
    "\n",
    "Here the \"smiles\" column contains the SMILES string, the \"measured log\n",
    "solubility in mols per litre\" contains the experimental measurement, and\n",
    "\"Compound ID\" contains the unique compound identifier.\n",
    "\n",
    "### Data Featurization \n",
    "\n",
    "Most machine learning algorithms require that input data form vectors. However, input data for drug-discovery datasets routinely come in the form of lists of molecules and associated experimental readouts. To load the data, we use a subclass of `dc.data.DataLoader` such as `dc.data.CSVLoader` or `dc.data.SDFLoader`. Users can subclass `dc.data.DataLoader` to load arbitrary file formats. All loaders must be passed a `dc.feat.Featurizer` object, which specifies how to transform molecules into vectors. DeepChem provides a number of different subclasses of `dc.feat.Featurizer`."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "-rrEZ5ihl56A"
   },
   "source": [
    "## Parsing data"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "a0AhOo1nl56D"
   },
   "source": [
    "In order to read in the data, we will use the pandas data analysis library.  \n",
    "\n",
    "In order to convert the drug names into smiles strings, we will use pubchempy. This isn't a standard DeepChem dependency, but you can install this library with `conda install pubchempy`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 190
    },
    "colab_type": "code",
    "id": "fYBi59mkl56F",
    "outputId": "8536d712-eedf-411c-859c-4db4f7204dfa"
   },
   "outputs": [],
   "source": [
    "!conda install pubchempy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "Gj-VYSail56Q"
   },
   "outputs": [],
   "source": [
    "import os\n",
    "import pandas as pd\n",
    "from pubchempy import get_cids, get_compounds"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "zwhTD4OBl56V"
   },
   "source": [
    "Pandas is magic but it doesn't automatically know where to find your data of interest.  You likely will have to look at it first using a GUI.  \n",
    "\n",
    "We will now look at a screenshot of this dataset as rendered by LibreOffice.\n",
    "\n",
    "To do this, we will import Image and os."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "6CrNCoe0l56s"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import os\n",
    "from IPython.display import Image, display\n",
    "current_dir = os.path.dirname(os.path.realpath('__file__'))\n",
    "data_screenshot = os.path.join(current_dir, 'assets/dataset_preparation_gui.png')\n",
    "display(Image(filename=data_screenshot))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "Ud2cRDy_l566"
   },
   "source": [
    "We see the data of interest is on the second sheet, and contained in columns \"TA ID\", \"N #1 (%)\", and \"N #2 (%)\".\n",
    "\n",
    "Additionally, it appears much of this spreadsheet was formatted for human readability (multicolumn headers, column labels with spaces and symbols, etc.).  This makes the creation of a neat dataframe object harder.  For this reason we will cut everything that is unnecesary or inconvenient.\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 309
    },
    "colab_type": "code",
    "id": "hVJDAGT8mbl1",
    "outputId": "52892aeb-f4e9-4a03-a7a3-1edaf512aa0d"
   },
   "outputs": [],
   "source": [
    "import deepchem as dc\n",
    "dc.utils.download_url(\n",
    "    'https://github.com/deepchem/deepchem/raw/master/datasets/Positive%20Modulators%20Summary_%20918.TUC%20_%20v1.xlsx',\n",
    "    current_dir,\n",
    "    'Positive Modulators Summary_ 918.TUC _ v1.xlsx'\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "pMvd0XzRl567"
   },
   "outputs": [],
   "source": [
    "raw_data_file = os.path.join(current_dir, 'Positive Modulators Summary_ 918.TUC _ v1.xlsx')\n",
    "raw_data_excel = pd.ExcelFile(raw_data_file)\n",
    "\n",
    "# second sheet only\n",
    "raw_data = raw_data_excel.parse(raw_data_excel.sheet_names[1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 204
    },
    "colab_type": "code",
    "id": "ei2QwtnVl57D",
    "outputId": "39406331-090a-4537-d9fd-74b9ba46172d",
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Unnamed: 0</th>\n",
       "      <th>Unnamed: 1</th>\n",
       "      <th>Unnamed: 2</th>\n",
       "      <th>Metric #1 (-120 mV Peak)</th>\n",
       "      <th>Unnamed: 4</th>\n",
       "      <th>Unnamed: 5</th>\n",
       "      <th>Unnamed: 6</th>\n",
       "      <th>Unnamed: 7</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Vehicle</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4</td>\n",
       "      <td>Replications</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>TA ##</td>\n",
       "      <td>Position</td>\n",
       "      <td>TA ID</td>\n",
       "      <td>Mean</td>\n",
       "      <td>SD</td>\n",
       "      <td>Threshold (%) = Mean + 4xSD</td>\n",
       "      <td>N #1 (%)</td>\n",
       "      <td>N #2 (%)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>1-A02</td>\n",
       "      <td>Penicillin V Potassium</td>\n",
       "      <td>-12.8689</td>\n",
       "      <td>6.74705</td>\n",
       "      <td>14.1193</td>\n",
       "      <td>-10.404</td>\n",
       "      <td>-18.1929</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2</td>\n",
       "      <td>1-A03</td>\n",
       "      <td>Mycophenolate Mofetil</td>\n",
       "      <td>-12.8689</td>\n",
       "      <td>6.74705</td>\n",
       "      <td>14.1193</td>\n",
       "      <td>-12.4453</td>\n",
       "      <td>-11.7175</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>3</td>\n",
       "      <td>1-A04</td>\n",
       "      <td>Metaxalone</td>\n",
       "      <td>-12.8689</td>\n",
       "      <td>6.74705</td>\n",
       "      <td>14.1193</td>\n",
       "      <td>-8.65572</td>\n",
       "      <td>-17.7753</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  Unnamed: 0 Unnamed: 1              Unnamed: 2 Metric #1 (-120 mV Peak)  \\\n",
       "0        NaN        NaN                     NaN                  Vehicle   \n",
       "1      TA ##   Position                   TA ID                     Mean   \n",
       "2          1      1-A02  Penicillin V Potassium                 -12.8689   \n",
       "3          2      1-A03   Mycophenolate Mofetil                 -12.8689   \n",
       "4          3      1-A04              Metaxalone                 -12.8689   \n",
       "\n",
       "  Unnamed: 4                   Unnamed: 5    Unnamed: 6 Unnamed: 7  \n",
       "0        NaN                            4  Replications        NaN  \n",
       "1         SD  Threshold (%) = Mean + 4xSD      N #1 (%)   N #2 (%)  \n",
       "2    6.74705                      14.1193       -10.404   -18.1929  \n",
       "3    6.74705                      14.1193      -12.4453   -11.7175  \n",
       "4    6.74705                      14.1193      -8.65572   -17.7753  "
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# preview 5 rows of raw dataframe\n",
    "raw_data.loc[raw_data.index[:5]]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "kfGr4zPSl57Q"
   },
   "source": [
    "Note that the actual row headers are stored in row 1 and not 0 above."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 119
    },
    "colab_type": "code",
    "id": "adUjxQF2l57Z",
    "outputId": "976bffc4-5792-4ba4-882d-660525ba229f",
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "# remove column labels (rows 0 and 1), as we will replace them\n",
    "# only take data given in columns \"TA ID\" \"N #1 (%)\" (3) and \"N #2 (%)\" (4)\n",
    "raw_data = raw_data.iloc[2:, [2, 6, 7]]\n",
    "\n",
    "# reset the index so we keep the label but number from 0 again\n",
    "raw_data.reset_index(inplace=True)\n",
    "\n",
    "## rename columns\n",
    "raw_data.columns = ['label', 'drug', 'n1', 'n2']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 204
    },
    "colab_type": "code",
    "id": "_AmIYJGjl57j",
    "outputId": "402dd41a-d077-44d0-ed6f-dad28e0cef3b"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>label</th>\n",
       "      <th>drug</th>\n",
       "      <th>n1</th>\n",
       "      <th>n2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2</td>\n",
       "      <td>Penicillin V Potassium</td>\n",
       "      <td>-10.404</td>\n",
       "      <td>-18.1929</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>3</td>\n",
       "      <td>Mycophenolate Mofetil</td>\n",
       "      <td>-12.4453</td>\n",
       "      <td>-11.7175</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>4</td>\n",
       "      <td>Metaxalone</td>\n",
       "      <td>-8.65572</td>\n",
       "      <td>-17.7753</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>5</td>\n",
       "      <td>Terazosin·HCl</td>\n",
       "      <td>-11.5048</td>\n",
       "      <td>16.0825</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>6</td>\n",
       "      <td>Fluvastatin·Na</td>\n",
       "      <td>-11.1354</td>\n",
       "      <td>-14.553</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   label                    drug       n1       n2\n",
       "0      2  Penicillin V Potassium  -10.404 -18.1929\n",
       "1      3   Mycophenolate Mofetil -12.4453 -11.7175\n",
       "2      4              Metaxalone -8.65572 -17.7753\n",
       "3      5           Terazosin·HCl -11.5048  16.0825\n",
       "4      6          Fluvastatin·Na -11.1354  -14.553"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# preview cleaner dataframe\n",
    "raw_data.loc[raw_data.index[:5]]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "6Htu9Bw6l57p"
   },
   "source": [
    "This formatting is closer to what we need.\n",
    "\n",
    "Now, let's take the drug names and get smiles strings for them (format needed for DeepChem)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "3hGrrqu5l57q"
   },
   "outputs": [],
   "source": [
    "drugs = raw_data['drug'].values"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "zJAABOqPl57y"
   },
   "source": [
    "For many of these, we can retreive the smiles string via the canonical_smiles attribute of the `get_compounds` object (using `pubchempy`)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 34
    },
    "colab_type": "code",
    "id": "yfCp2htdl570",
    "outputId": "7ec9923b-02ea-42ce-b98d-fb80fd684626"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[Compound(5281078)]"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "get_compounds(drugs[1], 'name')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 35
    },
    "colab_type": "code",
    "id": "rsesx-l8l58L",
    "outputId": "6f087c85-b3bc-4a56-f052-3b463e9d71aa"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'CC1=C2COC(=O)C2=C(C(=C1OC)CC=C(C)CCC(=O)OCCN3CCOCC3)O'"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "get_compounds(drugs[1], 'name')[0].canonical_smiles"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "x4qqWsWZl581"
   },
   "source": [
    "However, some of these drug names have variables spaces and symbols (·, (±), etc.), and names that may not be readable by pubchempy. \n",
    "\n",
    "For this task, we will do a bit of hacking via regular expressions.  Also, we notice that all ions are written in a shortened form that will need to be expanded.  For this reason we use a dictionary, mapping the shortened ion names to versions recognizable to pubchempy.  \n",
    "\n",
    "Unfortunately you may have several corner cases that will require more hacking."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "jGch_fRUl587"
   },
   "outputs": [],
   "source": [
    "import re\n",
    "\n",
    "ion_replacements = {\n",
    "    'HBr': ' hydrobromide',\n",
    "    '2Br': ' dibromide',\n",
    "    'Br': ' bromide',\n",
    "    'HCl': ' hydrochloride',\n",
    "    '2H2O': ' dihydrate',\n",
    "    'H20': ' hydrate',\n",
    "    'Na': ' sodium'\n",
    "}\n",
    "\n",
    "ion_keys = ['H20', 'HBr', 'HCl', '2Br', '2H2O', 'Br', 'Na']\n",
    "\n",
    "def compound_to_smiles(cmpd):\n",
    "    # remove spaces and irregular characters\n",
    "    compound = re.sub(r'([^\\s\\w]|_)+', '', cmpd)\n",
    "                   \n",
    "    # replace ion names if needed\n",
    "    for ion in ion_keys:\n",
    "        if ion in compound:\n",
    "            compound = compound.replace(ion, ion_replacements[ion])\n",
    "\n",
    "    # query for cid first in order to avoid timeouterror\n",
    "    cid = get_cids(compound, 'name')[0]\n",
    "    smiles = get_compounds(cid)[0].canonical_smiles\n",
    "\n",
    "    return smiles"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "H-qPqmm3l59s"
   },
   "source": [
    "Now let's actually convert all these compounds to smiles. This conversion will take a few minutes so might not be a bad spot to go grab a coffee or tea and take a break while this is running! Note that this conversion will sometimes fail so we've added some error handling to catch these cases below."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 68
    },
    "colab_type": "code",
    "id": "PMlMlVJTl59t",
    "outputId": "cf54a840-fb35-4904-c96e-e016ab7c1935",
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Errored on 162\n",
      "Errored on 303\n"
     ]
    }
   ],
   "source": [
    "smiles_map = {}\n",
    "for i, compound in enumerate(drugs):\n",
    "    try:\n",
    "        smiles_map[compound] = compound_to_smiles(compound)\n",
    "    except:\n",
    "        print(\"Errored on %s\" % i)\n",
    "        continue"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "CgPwj-Pvl594"
   },
   "outputs": [],
   "source": [
    "smiles_data = raw_data\n",
    "# map drug name to smiles string\n",
    "smiles_data['drug'] = smiles_data['drug'].apply(lambda x: smiles_map[x] if x in smiles_map else None)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 204
    },
    "colab_type": "code",
    "id": "xV3mQWwrl5-v",
    "outputId": "e031e783-4912-468f-abbb-64225e6b1ec6"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>label</th>\n",
       "      <th>drug</th>\n",
       "      <th>n1</th>\n",
       "      <th>n2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2</td>\n",
       "      <td>CC1(C(N2C(S1)C(C2=O)NC(=O)COC3=CC=CC=C3)C(=O)[...</td>\n",
       "      <td>-10.404</td>\n",
       "      <td>-18.1929</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>3</td>\n",
       "      <td>CC1=C2COC(=O)C2=C(C(=C1OC)CC=C(C)CCC(=O)OCCN3C...</td>\n",
       "      <td>-12.4453</td>\n",
       "      <td>-11.7175</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>4</td>\n",
       "      <td>CC1=CC(=CC(=C1)OCC2CNC(=O)O2)C</td>\n",
       "      <td>-8.65572</td>\n",
       "      <td>-17.7753</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>5</td>\n",
       "      <td>COC1=C(C=C2C(=C1)C(=NC(=N2)N3CCN(CC3)C(=O)C4CC...</td>\n",
       "      <td>-11.5048</td>\n",
       "      <td>16.0825</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>6</td>\n",
       "      <td>CC(C)N1C2=CC=CC=C2C(=C1C=CC(CC(CC(=O)[O-])O)O)...</td>\n",
       "      <td>-11.1354</td>\n",
       "      <td>-14.553</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   label                                               drug       n1       n2\n",
       "0      2  CC1(C(N2C(S1)C(C2=O)NC(=O)COC3=CC=CC=C3)C(=O)[...  -10.404 -18.1929\n",
       "1      3  CC1=C2COC(=O)C2=C(C(=C1OC)CC=C(C)CCC(=O)OCCN3C... -12.4453 -11.7175\n",
       "2      4                     CC1=CC(=CC(=C1)OCC2CNC(=O)O2)C -8.65572 -17.7753\n",
       "3      5  COC1=C(C=C2C(=C1)C(=NC(=N2)N3CCN(CC3)C(=O)C4CC... -11.5048  16.0825\n",
       "4      6  CC(C)N1C2=CC=CC=C2C(=C1C=CC(CC(CC(=O)[O-])O)O)... -11.1354  -14.553"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# preview smiles data\n",
    "smiles_data.loc[smiles_data.index[:5]]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "ES-ak26xl5-1"
   },
   "source": [
    "Hooray, we have mapped each drug name to its corresponding smiles code.\n",
    "\n",
    "Now, we need to look at the data and remove as much noise as possible."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "ghu-RpSCl5-3"
   },
   "source": [
    "## De-noising data"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "axbec0-Dl5-4"
   },
   "source": [
    "In machine learning, we know that there is no free lunch.  You will need to spend time analyzing and understanding your data in order to frame your problem and determine the appropriate model framework.  Treatment of your data will depend on the conclusions you gather from this process.\n",
    "\n",
    "Questions to ask yourself:\n",
    "* What are you trying to accomplish?\n",
    "* What is your assay?\n",
    "* What is the structure of the data?\n",
    "* Does the data make sense?\n",
    "* What has been tried previously?\n",
    "\n",
    "For this project (respectively):\n",
    "* I would like to build a model capable of predicting the affinity of an arbitrary small molecule drug to a particular ion channel protein\n",
    "* For an input drug, data describing channel inhibition\n",
    "* A few hundred drugs, with n=2\n",
    "* Will need to look more closely at the dataset*\n",
    "* Nothing on this particular protein"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "ls_jIMqUl5-5"
   },
   "source": [
    "*This will involve plotting, so we will import matplotlib and seaborn.  We will also need to look at molecular structures, so we will import rdkit. We will also use the seaborn library which you can install with `conda install seaborn`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 71
    },
    "colab_type": "code",
    "id": "Xe0sqLZ0l5-6",
    "outputId": "4e1a4198-0617-4159-e193-8c3e485de045"
   },
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "\n",
    "import seaborn as sns\n",
    "sns.set_style('white')\n",
    "\n",
    "from rdkit import Chem\n",
    "from rdkit.Chem import AllChem\n",
    "from rdkit.Chem import Draw, PyMol, rdFMCS\n",
    "from rdkit.Chem.Draw import IPythonConsole\n",
    "from rdkit import rdBase\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "9fKzIHFnl5_K"
   },
   "source": [
    "Our goal is to build a small molecule model, so let's make sure our molecules are all small.  This can be approximated by the length of each smiles string."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 297
    },
    "colab_type": "code",
    "id": "HZjb8u_fl5_S",
    "outputId": "136daa91-c521-4d32-e204-bbb05eec8149"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'probability')"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "smiles_data['len'] = [len(i) if i is not None else 0 for i in smiles_data['drug']]\n",
    "smiles_lens = [len(i) if i is not None else 0 for i in smiles_data['drug']]\n",
    "sns.histplot(smiles_lens)\n",
    "plt.xlabel('len(smiles)')\n",
    "plt.ylabel('probability')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "UmKR_T4Vl5_X"
   },
   "source": [
    "Some of these look rather large, len(smiles) > 150.  Let's see what they look like."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "X2H-4P1ol5_Y"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<PIL.PngImagePlugin.PngImageFile image mode=RGB size=1200x200 at 0x14C4E1C90>"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# indices of large looking molecules\n",
    "suspiciously_large = np.where(np.array(smiles_lens) > 150)[0]\n",
    "\n",
    "# corresponding smiles string\n",
    "long_smiles = smiles_data.loc[smiles_data.index[suspiciously_large]]['drug'].values\n",
    "\n",
    "# look\n",
    "Draw._MolsToGridImage([Chem.MolFromSmiles(i) for i in long_smiles], molsPerRow=6)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "kazyeOPYl5_i"
   },
   "source": [
    "As suspected, these are not small molecules, so we will remove them from the dataset.  The argument here is that these molecules could register as inhibitors simply because they are large.  They are more likely to sterically blocks the channel, rather than diffuse inside and bind (which is what we are interested in).\n",
    "\n",
    "The lesson here is to remove data that does not fit your use case."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "xkFF2eMgl5_j"
   },
   "outputs": [],
   "source": [
    "# drop large molecules\n",
    "smiles_data = smiles_data[~smiles_data['drug'].isin(long_smiles)]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "QjSLGiv0l5_m"
   },
   "source": [
    "Now, let's look at the numerical structure of the dataset.\n",
    "\n",
    "First, check for NaNs."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 421
    },
    "colab_type": "code",
    "id": "H5wkbrWgl5_n",
    "outputId": "a4b2e5eb-4feb-40e4-b12d-e1f28dc2d3b7"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>n1</th>\n",
       "      <th>n2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>62</th>\n",
       "      <td>NaN</td>\n",
       "      <td>-7.8266</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>162</th>\n",
       "      <td>-12.8456</td>\n",
       "      <td>-11.4627</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>175</th>\n",
       "      <td>NaN</td>\n",
       "      <td>-6.61225</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>187</th>\n",
       "      <td>NaN</td>\n",
       "      <td>-8.23326</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>233</th>\n",
       "      <td>-8.21781</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>262</th>\n",
       "      <td>NaN</td>\n",
       "      <td>-12.8788</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>288</th>\n",
       "      <td>NaN</td>\n",
       "      <td>-2.34264</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>300</th>\n",
       "      <td>NaN</td>\n",
       "      <td>-8.19936</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>301</th>\n",
       "      <td>NaN</td>\n",
       "      <td>-10.4633</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>303</th>\n",
       "      <td>-5.61374</td>\n",
       "      <td>8.42267</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>311</th>\n",
       "      <td>NaN</td>\n",
       "      <td>-8.78722</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          n1       n2\n",
       "62       NaN  -7.8266\n",
       "162 -12.8456 -11.4627\n",
       "175      NaN -6.61225\n",
       "187      NaN -8.23326\n",
       "233 -8.21781      NaN\n",
       "262      NaN -12.8788\n",
       "288      NaN -2.34264\n",
       "300      NaN -8.19936\n",
       "301      NaN -10.4633\n",
       "303 -5.61374  8.42267\n",
       "311      NaN -8.78722"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "nan_rows = smiles_data[smiles_data.isnull().T.any().T]\n",
    "nan_rows[['n1', 'n2']]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "Z6xL_ztsl5_u"
   },
   "source": [
    "I don't trust n=1, so I will throw these out.  \n",
    "\n",
    "Then, let's examine the distribution of n1 and n2."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 458
    },
    "colab_type": "code",
    "id": "txAjPzOAl5_2",
    "outputId": "6679981a-60cd-473f-f6fb-86166d7c5b5e"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<seaborn.axisgrid.JointGrid at 0x14c4e37d0>"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAasAAAGoCAYAAAD4hcrDAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nO3de1yT590/8E8SAoGEICAnEXAIVkSFWoa2A9vqY+vL2fWwoa6r/XXV2sM8T2vXqWjrYT6ddlU3q13bOXtSZzvXPq1rZ7taq7bVFVuZZyooBURASAIhIff9+wNzm0A4KeS+Qz7vvzQE8oXafLiu63tdl0oURRFEREQKppa7ACIioo4wrIiISPEYVkREpHgMKyIiUjyGFRERKR7DioiIFI9hRUREisewIiIixQuQuwCi3mbTv8/gfE09ACAhPASP35Yic0VEvo9hRdTNztfUo6jSIncZRL0KpwGJiEjxGFZERKR4DCsiIlI8hhURESkew4qIiBSPYUXUgzQqldwlEPUKbF0n6kGxYTq3fVcjEsNRaWrkPiyiLmJYEfUw131X8X2CUXq5gfuwiLqI04BERKR4HFkRXaeW03xE1P0YVkTXqeU0HxF1P04DEhGR4jGsiIhI8RhWRESkeAwrIiJSPIYVEREpHsOKiIgUj2FFRESKx7AiIiLFY1gRyYinshN1Dk+wIJJRy1PZeQo7kWcMKyKZuR7XRESecRqQiIgUj2FFRESKx7AiIiLF45oVURe4NkMAvL+KyFsYVkRd0LIZgvdXEXkHpwGJiEjxGFZERKR4DCsiIlI8hhURESkew4qIiBSPYUWkIDzYlsgztq4TKUjLg20BHm5LBDCsiNrlGhze2gDMg22JWmNYEbXDNTi4AZhIPlyzIiIixWNYERGR4jGsiIhI8RhWRESkeAwrIoXj3isidgMSKV7LvVcjEsNRaWps8+/cl0W9EcOKyAe0bKEvvdzQ5t+JeiOGFZELOTYBE1HHGFZELrgJmEiZGFbk1ziSIvINDCvyKy3DqTeOpDx1D7p+32zAIF/EsCKf1Zk3YH8Ip5Y8dQ/ycFzydQwrUqyOwsj1DbitvUj+EE6etPd9e2vflj9ddcKRa8/zq7D6x9FSVJoaAQBRoUH4SUa84mpw/XhqtAGXG+zS3zvzOXJ9X92h5ffekYTwEOnPGQl93D7f+TVcnxNj1EHt8kZ9vX/via/pjdfw9LPqjn9XXf3v1xly/NvuzM+GvE8liqIodxFdMW3aNNTU1MhdBhFRtwsPD8fLL78sdxmK5HNhRURE/odnAxIRkeIxrIiISPEYVkREpHgMKyIiUjyGFRERKR7DioiIFI9hRUREisewIiIixWNYERGR4vlcWE2bNk3uEoiIZOdv74U+F1Y8F5CIyP/eC30urIiIyP8wrIiISPEYVkREpHgMKyIiUjyGFRERKR7DioiIFI9hRUREisewIiIixWNYERGR4gXIXQARkRIJgohzVRZU1FkRY9RhQKQearVK7rL8FsOKiKgFQRCxp7Ac83cUwGoXoNOqsW5SJsanxzKwZMJpQCKiFs5VWaSgAgCrXcD8HQU4V2WRuTL/xbAiImqhos4qBZWT1S7goskqU0WtmaxNcpfgVQwrIqIWYow66LTub486rRrRoTqZKmqtSRA6flIv4vWwqqqqwq233oqzZ8+iuLgYP//5z3H//fcjPz8fgp/98IlImQZE6rFuUqYUWM41qwGRepkr819ebbCw2+1YunQpdLrm305Wr16NuXPnYuTIkVi6dCn27t2LcePGebMkIqJW1GoVxqfHYvDsXFw0WREdym5AuXl1ZLVmzRpMmTIF0dHRAIDCwkJkZ2cDAEaPHo0DBw54sxwiojap1SokRxkwKrkvkqMMiguqALV/reJ47bt9++23ERERgdzcXOkxURShUjX/A9Dr9TCZTN4qh4jIp4Xq/Gvnkde+2127dkGlUuHgwYM4fvw4Fi1ahOrqaunjFosFRqPRW+UQEZEP8VpYvf7669Kfp06dimXLluG5557DF198gZEjR2Lfvn0YNWqUt8ohIiIfIuuk56JFi7BhwwZMnjwZdrsdd955p5zlEBGRQsky6blt2zbpz6+99pocJRARkQ/xr3YSIiLySQwrIiJSPIYVEREpHsOKiIgUj2FFRESKx7AiIiLFY1gREZHiMayIiEjxGFZERKR4DCsiIlI8hhURESkew4qIiBSPYUVERIrHsCIiIsVjWBERkeIxrIiISPEYVkREpHgMKyIiUjyGFRERKR7DioiIFI9hRUREisewIiIixWNYERGR4jGsiIhI8RhWRESkeAwrIiJSPIYVEREpHsOKiIgUj2FFRESKx7AiIiLFY1gREZHiMayIiEjxGFZERKR4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\n",
      "text/plain": [
       "<Figure size 432x432 with 3 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df = smiles_data.dropna(axis=0, how='any')\n",
    "# seaborn jointplot will allow us to compare n1 and n2, and plot each marginal\n",
    "sns.jointplot(x='n1', y='n2', data=smiles_data) "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "dqNjNcTNl5_7"
   },
   "source": [
    "We see that most of the data is contained in the gaussian-ish blob centered a bit below zero.  We see that there are a few clearly active datapoints located in the bottom left, and one on the top right.  These are all distinguished from the majority of the data.  How do we handle the data in the blob?  \n",
    "\n",
    "Because n1 and n2 represent the same measurement, ideally they would be of the same value.  This plot should be tightly aligned to the diagonal, and the pearson correlation coefficient should be 1.  We see this is not the case.  This helps gives us an idea of the error of our assay.\n",
    "\n",
    "Let's look at the error more closely, plotting in the distribution of (n1-n2)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 296
    },
    "colab_type": "code",
    "id": "guGcilXIl5_9",
    "outputId": "89bcc713-0d04-443d-eda0-19deb9abf560"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'probability')"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "diff_df = df['n1'] - df['n2']\n",
    "\n",
    "sns.histplot(diff_df)\n",
    "plt.xlabel('difference in n')\n",
    "plt.ylabel('probability')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "VTbA5r_Zl6AD"
   },
   "source": [
    "This looks pretty gaussian, let's get the 95% confidence interval by fitting a gaussian via scipy, and taking 2*the standard deviation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 34
    },
    "colab_type": "code",
    "id": "PcBDorCcl6AS",
    "outputId": "ee99844a-4b00-4056-bc5b-ee4282a5172d"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "17.75387954711914"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from scipy import stats\n",
    "mean, std = stats.norm.fit(np.asarray(diff_df, dtype=np.float32))\n",
    "ci_95 = std*2\n",
    "ci_95"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "N_6SzWXyl6Ak"
   },
   "source": [
    "Now, I don't trust the data outside of the confidence interval, and will therefore drop these datapoints from df.  \n",
    "\n",
    "For example, in the plot above, at least one datapoint has n1-n2 > 60.  This is disconcerting."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 458
    },
    "colab_type": "code",
    "id": "qR8D_BKel6Ay",
    "outputId": "c5f59a48-4780-4883-a3fa-b47320071f6c"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<seaborn.axisgrid.JointGrid at 0x15a363c10>"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x432 with 3 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "noisy = diff_df[abs(diff_df) > ci_95]\n",
    "df = df.drop(noisy.index)\n",
    "sns.jointplot(x='n1', y='n2', data=df) "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "oORmeyHNl6A1"
   },
   "source": [
    "Now that data looks much better!\n",
    "\n",
    "So, let's average n1 and n2, and take the error bar to be ci_95."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 204
    },
    "colab_type": "code",
    "id": "7NsMKc6Nl6A3",
    "outputId": "cef1fc9d-6b55-403a-c0c5-97cd92303624"
   },
   "outputs": [],
   "source": [
    "avg_df = df[['label', 'drug']].copy()\n",
    "n_avg = df[['n1', 'n2']].mean(axis=1)\n",
    "avg_df['n'] = n_avg\n",
    "avg_df.sort_values('n', inplace=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "FIUv_SV2l6A7"
   },
   "source": [
    "Now, let's look at the sorted data with error bars."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 296
    },
    "colab_type": "code",
    "id": "YN1DgKJNl6BD",
    "outputId": "23bb0034-c1c8-4a91-b915-48d2a76a2e6c"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'activity')"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.errorbar(np.arange(avg_df.shape[0]), avg_df['n'], yerr=ci_95, fmt='o')\n",
    "plt.xlabel('drug, sorted')\n",
    "plt.ylabel('activity')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "NxsJUoS0l6BH"
   },
   "source": [
    "Now, let's identify our active compounds.  \n",
    "\n",
    "In my case, this required domain knowledge.  Having worked in this area, and having consulted with professors specializing on this channel, I am interested in compounds where the absolute value of the activity is greater than 25.  This relates to the desired drug potency we would like to model.\n",
    "\n",
    "If you are not certain how to draw the line between active and inactive, this cutoff could potentially be treated as a hyperparameter."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 282
    },
    "colab_type": "code",
    "id": "MQPUH1ogl6BH",
    "outputId": "c6874a35-23f1-4a7d-e4ac-6a7fc90fc32a",
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<ErrorbarContainer object of 3 artists>"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "actives = avg_df[abs(avg_df['n'])-ci_95 > 25]['n']\n",
    "\n",
    "plt.errorbar(np.arange(actives.shape[0]), actives, yerr=ci_95, fmt='o')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 34
    },
    "colab_type": "code",
    "id": "9rz2KjJ8l6BS",
    "outputId": "ebeac3f3-091b-4e99-ac7d-8bfec5f59aac"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(430, 5) (392, 3) 6\n"
     ]
    }
   ],
   "source": [
    "# summary\n",
    "print (raw_data.shape, avg_df.shape, len(actives.index))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "TiNqzX0Kl6BV"
   },
   "source": [
    "In summary, we have:\n",
    "* Removed data that did not address the question we hope to answer (small molecules only)\n",
    "* Dropped NaNs\n",
    "* Determined the noise of our measurements\n",
    "* Removed exceptionally noisy datapoints\n",
    "* Identified actives (using domain knowledge to determine a threshold)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "46rf9hMkl6BW"
   },
   "source": [
    "## Determine model type, final form of dataset, and sanity load"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "vUK150zHl6BX"
   },
   "source": [
    "Now, what model framework should we use?  \n",
    "\n",
    "Given that we have 392 datapoints and 6 actives, this data will be used to build a low data one-shot classifier (10.1021/acscentsci.6b00367).  If there were datasets of similar character, transfer learning could potentially be used, but this is not the case at the moment.\n",
    "\n",
    "\n",
    "Let's apply logic to our dataframe in order to cast it into a binary format, suitable for classification."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 119
    },
    "colab_type": "code",
    "id": "WwcvCbigl6BX",
    "outputId": "a7e8abc2-f738-401d-9e1e-f4eb3238ba8b"
   },
   "outputs": [],
   "source": [
    "# 1 if condition for active is met, 0 otherwise\n",
    "avg_df.loc[:, 'active'] = (abs(avg_df['n'])-ci_95 > 25).astype(int)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "2t7vmHnNl6Bc"
   },
   "source": [
    "Now, save this to file."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "a6AGQoB2l6Be"
   },
   "outputs": [],
   "source": [
    "avg_df.to_csv('modulators.csv', index=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "Vs7Pkg7Il6Bp"
   },
   "source": [
    "Now, we will convert this dataframe to a DeepChem dataset."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 88
    },
    "colab_type": "code",
    "id": "NRpnbgyAl6Bv",
    "outputId": "9f37a491-24cc-4a2c-af7c-23d1dd42e72c"
   },
   "outputs": [],
   "source": [
    "dataset_file = 'modulators.csv'\n",
    "task = ['active']\n",
    "featurizer_func = dc.feat.ConvMolFeaturizer()\n",
    "\n",
    "loader = dc.data.CSVLoader(tasks=task, feature_field='drug', featurizer=featurizer_func)\n",
    "dataset = loader.create_dataset(dataset_file)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "D9GElTwzl6B0"
   },
   "source": [
    "Lastly, it is often advantageous to numerically transform the data in some way.  For example, sometimes it is useful to normalize the data, or to zero the mean.  This depends in the task at hand.\n",
    "\n",
    "Built into DeepChem are many useful transformers, located in the deepchem.transformers.transformers base class. \n",
    "\n",
    "Because this is a classification model, and the number of actives is low, I will apply a balancing transformer.  I treated this transformer as a hyperparameter when I began training models.  It proved to unambiguously improve model performance."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "-Ll5i93il6B1"
   },
   "outputs": [],
   "source": [
    "transformer = dc.trans.BalancingTransformer(dataset=dataset)\n",
    "dataset = transformer.transform(dataset)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "L57S8x7sl6B4"
   },
   "source": [
    "Now let's save the balanced dataset object to disk, and then reload it as a sanity check."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "MwFyB7Ryl6B5"
   },
   "outputs": [],
   "source": [
    "dc.utils.save_to_disk(dataset, 'balanced_dataset.joblib')\n",
    "balanced_dataset = dc.utils.load_from_disk('balanced_dataset.joblib')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "Oydv-y4Fl6B9"
   },
   "source": [
    "Tutorial written by Keri McKiernan (github.com/kmckiern) on September 8, 2016"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "F2E5bL1Jl6CD"
   },
   "source": [
    "# Congratulations! Time to join the Community!\n",
    "\n",
    "Congratulations on completing this tutorial notebook! If you enjoyed working through the tutorial, and want to continue working with DeepChem, we encourage you to finish the rest of the tutorials in this series. You can also help the DeepChem community in the following ways:\n",
    "\n",
    "## Star DeepChem on [GitHub](https://github.com/deepchem/deepchem)\n",
    "This helps build awareness of the DeepChem project and the tools for open source drug discovery that we're trying to build.\n",
    "\n",
    "## Join the DeepChem Gitter\n",
    "The DeepChem [Gitter](https://gitter.im/deepchem/Lobby) hosts a number of scientists, developers, and enthusiasts interested in deep learning for the life sciences. Join the conversation!\n",
    "\n",
    "\n",
    "# Bibliography\n",
    "\n",
    "[2] Anderson, Eric, Gilman D. Veith, and David Weininger. \"SMILES, a line\n",
    "notation and computerized interpreter for chemical structures.\" US\n",
    "Environmental Protection Agency, Environmental Research Laboratory, 1987."
   ]
  }
 ],
 "metadata": {
  "colab": {
   "name": "09_Creating_a_high_fidelity_model_from_experimental_data.ipynb",
   "provenance": []
  },
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
